<?php
namespace common\modules\system\models\search;

use common\modules\system\models\DataDictionary;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;

/**
 * DataDictionarySearch represents the model behind the search form about `common\modules\system\models\DataDictionary`.
 */
class DataDictionarySearch extends DataDictionary
{

    public function init()
    {
        parent::init();
        
        $this->category_id = getGetValue('category');
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [
                [
                    'id',
                    'parent_id',
                    'status',
                    'sort'
                ],
                'integer'
            ],
            [
                [
                    'category_id',
                    'name',
                    'value',
                    'description',
                    'thumbnail'
                ],
                'safe'
            ]
        ];
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @param array $params            
     *
     * @return ActiveDataProvider
     */
    public function search($params)
    {
        $query = DataDictionary::find();
        
        $dataProvider = new ActiveDataProvider([
            'query' => $query
        ]);
        
        $this->load($params);
        
        if (! $this->validate()) {
            // uncomment the following line if you do not want to any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }
        
        // $query->andFilterWhere([
        // 'id' => $this->id,
        // 'parent_id' => $this->parent_id,
        // 'status' => $this->status,
        // 'sort_num' => $this->sort_num,
        // ]);
        
        $query->andFilterWhere([
            'like',
            'category_id',
            $this->category_id
        ])
            ->andFilterWhere([
            'like',
            'name',
            $this->name
        ])
            ->andFilterWhere([
            'like',
            'value',
            $this->value
        ])
            ->andFilterWhere([
            'like',
            'description',
            $this->description
        ])
            ->andFilterWhere([
            'like',
            'thumbnail',
            $this->thumbnail
        ]);
        
        return $dataProvider;
    }
}
